![]() |
![]() |
![]() | |
![]() ![]() ![]() ![]()
╬Ωφα Φ ΣΦαδεπεΓ√σ ∩αφσδΦ |
╬∩Φ±αφΦσ Φ±⌡εΣφεπε ≥σΩ±≥α ∩≡ΦδεµσφΦ MenuApp╩αΩ ∞√ ≤µσ πεΓε≡ΦδΦ, ∩≡ΦδεµσφΦσ MenuApp ≡αßε≥ασ≥ αΓ≥εφε∞φε. ╧ε²≥ε∞≤ ∞√ Φ∞∩ε≡≥Φ≡≤σ∞ ≥εδⁿΩε Ωδα±± java.awt.*, φσεß⌡εΣΦ∞√Θ Σδ ≡αßε≥√ ± εΩφα∞Φ: import java.awt.*; ┬ φα°σ∞ ∩≡ΦδεµσφΦΦ ε∩≡σΣσδσφε ≥≡Φ Ωδα±±α - MenuApp, MainFrameWnd Φ MessageBox. ╩δα±± MenuApp┬ πδαΓφε∞ Ωδα±±σ ∩≡ΦδεµσφΦ MenuApp ∞√ ε∩≡σΣσδΦδΦ ≥εδⁿΩε εΣΦφ ∞σ≥εΣ main. ▌≥ε≥ ∞σ≥εΣ ∩εδ≤≈ασ≥ ≤∩≡αΓδσφΦσ ∩≡Φ τα∩≤±Ωσ ∩≡ΦδεµσφΦ . ╧σ≡Γ√∞ Σσδε∞ ∞σ≥εΣ main ±ετΣασ≥ εß·σΩ≥ Ωδα±±α MainFrameWnd, ε∩≡σΣσδσφφεπε Γ φα°σ∞ ∩≡ΦδεµσφΦΦ: MainFrameWnd frame = new MainFrameWnd("MenuApp"); ▌≥ε≥ Ωδα±±, ±ετΣαφφ√Θ φα ßατσ Ωδα±±α Frame, ε∩≡σΣσδ σ≥ ∩εΓσΣσφΦσ πδαΓφεπε εΩφα φα°σπε ∩≡ΦδεµσφΦ . ═α Γ≥ε≡ε∞ °απσ ∞σ≥εΣ init φα±≥≡αΦΓασ≥ ≡ατ∞σ≡√ πδαΓφεπε εΩφα ± ≤≈σ≥ε∞ ≡ατ∞σ≡εΓ Γφσ°φσΘ ≡α∞ΩΦ Φ ταπεδεΓΩα εΩφα: frame.setSize(frame.getInsets().left + frame.getInsets().right + 320, frame.getInsets().top + frame.getInsets().bottom + 240); ╧εδ left Φ right εß·σΩ≥α Ωδα±±α Insets, ±±√δΩ≤ φα Ωε≥ε≡√Θ ΓετΓ≡α∙ασ≥ ∞σ≥εΣ getInsets, ±εΣσ≡µα≥ °Φ≡Φφ≤ δσΓεΘ Φ ∩≡αΓεΘ ≈α±≥Φ ≡α∞ΩΦ εΩφα, ±εε≥Γσ≥±≥Γσφφε. ╧εδσ top ±εΣσ≡µΦ≥ Γ√±ε≥≤ Γσ≡⌡φσΘ ≈α±≥Φ ≡α∞ΩΦ εΩφα ± ≤≈σ≥ε∞ ταπεδεΓΩα, α ∩εδσ bottom - Γ√±ε≥≤ φΦµφσΘ ≈α±≥Φ ≡α∞ΩΦ εΩφα. ─δ ε≥εß≡αµσφΦ εΩφα ⌠≡σΘ∞α ∞√ Γ√τ√Γασ∞ ∞σ≥εΣ show, ΩαΩ ²≥ε ∩εΩαταφε φΦµσ: frame.show(); ╩δα±± MainFrameWnd╩δα±± MainFrameWnd ±ετΣαφ φα ßατσ Ωδα±±α Frame: class MainFrameWnd extends Frame { . . . } ┬ φσ∞ ∞√ ε∩≡σΣσδΦδΦ ≥≡Φ ∩εδ , Ωεφ±≥≡≤Ω≥ε≡, ∞σ≥εΣ√ paint, handleEvent Φ action. ╧εδ Ωδα±±α MainFrameWnd╧εδσ mbMainMenuBar ∩≡σΣφαταφ≈σφε Σδ ⌡≡αφσφΦ ±±√δΩΦ φα πδαΓφεσ ∞σφ■ ∩≡ΦδεµσφΦ , ±ετΣαΓασ∞εσ ΩαΩ εß·σΩ≥ Ωδα±±α MenuBar: MenuBar mbMainMenuBar; ╧εδ mnFile Φ mnHelp ⌡≡αφ ≥ ±±√δΩΦ φα ∞σφ■ File Φ Help, ±εε≥Γσ≥±≥Γσφφε: Menu mnFile; Menu mnHelp; ─αφφ√σ ∞σφ■ ±ετΣα■≥± φα ßατσ Ωδα±±α Menu. ╩εφ±≥≡≤Ω≥ε≡ Ωδα±±α MainFrameWnd┬ Ωα≈σ±≥Γσ σΣΦφ±≥Γσφφεπε ∩α≡α∞σ≥≡α Ωεφ±≥≡≤Ω≥ε≡≤ Ωδα±±α MainFrameWnd ∩σ≡σΣασ≥± ταπεδεΓεΩ ±ετΣαΓασ∞επε εΩφα. ┬ ∩σ≡ΓεΘ Φ±∩εδφ σ∞εΘ ±≥≡εΩσ φα° Ωεφ±≥≡≤Ω≥ε≡ Γ√τ√Γασ≥ Ωεφ±≥≡≤Ω≥ε≡ Φτ ßατεΓεπε Ωδα±±α, ∩σ≡σΣαΓα σ∞≤ ±≥≡εΩ≤ ταπεδεΓΩα ≈σ≡στ ∩α≡α∞σ≥≡: public MainFrameWnd(String sTitle) { super(sTitle); . . . } ─αδσσ Ωεφ±≥≡≤Ω≥ε≡ ε∩≡σΣσδ σ≥ ≡ατ∞σ≡√ εΩφα, Γ√τ√Γα Σδ φσπε ∞σ≥εΣ setSize: setSize(400, 200); ╟α≥σ∞ ∞√ ≤±≥αφαΓδΦΓασ∞ Σδ φα°σπε εΩφα µσδ≥√Θ ÷Γσ≥ ⌠εφα Φ ≈σ≡φ√Θ ÷Γσ≥ Φτεß≡αµσφΦ : setBackground(Color.yellow); setForeground(Color.black); ╧ε ≤∞εδ≈αφΦ■ Σδ εΩεφ Ωδα±±α Frame ≤±≥αφαΓδΦΓασ≥± ≡σµΦ∞ ΣεßαΓδσφΦ Ωε∞∩εφσφ≥ BorderLayout. ╠√ Φτ∞σφ σ∞ ²≥ε≥ ≡σµΦ∞ φα FlowLayout, Γ√τ√Γα ∞σ≥εΣ setLayout: setLayout(new FlowLayout()); ─αδσσ Ωεφ±≥≡≤Ω≥ε≡ ∩≡Φ±≥≤∩ασ≥ Ω ⌠ε≡∞Φ≡εΓαφΦ■ πδαΓφεπε ∞σφ■ εΩφα. ▌≥ε ∞σφ■ ±ετΣασ≥± ΩαΩ εß·σΩ≥ Ωδα±±α MenuBar: mbMainMenuBar = new MenuBar(); ╟α≥σ∞ ∞√ ±ετΣασ∞ Φ φα∩εδφ σ∞ ∞σφ■ "File": mnFile = new Menu("File"); mnFile.add("New"); mnFile.add("-"); mnFile.add("Exit"); ▌≥ε ∞σφ■ ±ετΣασ≥± φα ßατσ Ωδα±±α Menu. ╬ß≡α≥Φ≥σ ΓφΦ∞αφΦσ, ≈≥ε ∞σµΣ≤ ±≥≡εΩα∞Φ New Φ File ≡α±∩εδεµσφ ≡ατΣσδΦ≥σδⁿ. └φαδεπΦ≈φ√∞ εß≡ατε∞ ∞√ ΣεßαΓδ σ∞ Γ πδαΓφεσ ∞σφ■ Σ≡≤πεσ ∞σφ■ - "Help": mnHelp = new Menu("Help"); mnHelp.add("Content"); mnHelp.add("-"); mnHelp.add("About"); ╧ε±δσ ±Γεσπε εΩεφ≈α≥σδⁿφεπε ⌠ε≡∞Φ≡εΓαφΦ ∞σφ■ "File" Φ "Help" ΣεßαΓδ ■≥± Γ πδαΓφεσ ∞σφ■ εΩφα mbMainMenuBar: mbMainMenuBar.add(mnFile); mbMainMenuBar.add(mnHelp); ╚, φαΩεφσ÷, ΩεπΣα πδαΓφεσ ∞σφ■ ß≤Σσ≥ ±⌠ε≡∞Φ≡εΓαφε, εφε ∩εΣΩδ■≈ασ≥± Ω εΩφ≤ Γ√τεΓε∞ ∞σ≥εΣα setMenuBar, ΩαΩ ²≥ε ∩εΩαταφε φΦµσ: setMenuBar(mbMainMenuBar); ╠σ≥εΣ paint╠σ≥εΣ paint ∩εδ≤≈ασ≥ Γ Ωα≈σ±≥Γσ ∩α≡α∞σ≥≡α ±±√δΩ≤ φα Ωεφ≥σΩ±≥ ε≥εß≡αµσφΦ , ∩≡ΦπεΣφ√Θ Σδ ≡Φ±εΓαφΦ Γ φα°σ∞ εΩφσ. ╧εδⁿτ≤ ±ⁿ ²≥Φ∞ Ωεφ≥σΩ±≥ε∞, ∞√ ≤±≥αφαΓδΦΓασ∞ °≡Φ⌠≥ ≥σΩ±≥α Φ ≡Φ±≤σ∞ ≥σΩ±≥εΓ≤■ ±≥≡εΩ≤. ╟α≥σ∞ ∞√ Γ√τ√Γασ∞ ∞σ≥εΣ paint Φτ ßατεΓεπε Ωδα±±α Frame, φα ε±φεΓσ Ωε≥ε≡επε ±ετΣαφ φα° Ωδα±± MainFrameWnd: public void paint(Graphics g) { g.setFont(new Font( "Helvetica", Font.PLAIN, 12)); g.drawString("Frame window", 10, 70); super.paint(g); } ╠σ≥εΣ handleEvent─δ ≥επε ≈≥εß√ ε∩≡σΣσδΦ≥ⁿ ≡σαΩ÷Φ■ εΩφα φα ∩ε∩√≥Ω≤ ∩εδⁿτεΓα≥σδ ταΩ≡√≥ⁿ εΩφε ± ∩ε∞ε∙ⁿ■ ε≡παφεΓ ≤∩≡αΓδσφΦ , ≡α±∩εδεµσφφ√⌡ Γ ταπεδεΓΩσ εΩφα, ΦδΦ Σ≡≤πΦ∞ ±∩ε±εßε∞, ∞√ ∩σ≡σε∩≡σΣσδΦδΦ ∞σ≥εΣ handleEvent. ╧≡Φ ∩εδ≤≈σφΦΦ ΩεΣα ±εß√≥Φ Event.WINDOW_DESTROY (≤ΣαδσφΦσ εΩφα) ∞√ ±Ω≡√Γασ∞ εΩφε, Γ√τ√Γα ∞σ≥εΣ setVisible ± ∩α≡α∞σ≥≡ε∞ false. ╟α≥σ∞ ± ∩ε∞ε∙ⁿ■ ±≥α≥Φ≈σ±Ωεπε ∞σ≥εΣα exit Ωδα±±α System ∞√ ταΓσ≡°ασ∞ ≡αßε≥≤ Φφ≥σ≡∩≡σ≥α≥ε≡α: public boolean handleEvent(Event evt) { if(evt.id == Event.WINDOW_DESTROY) { setVisible(false); System.exit(0); return true; } else return super.handleEvent(evt); } ╠σ≥εΣ action▌≥ε≥ ∞σ≥εΣ εß≡αßα≥√Γασ≥ ±εß√≥Φ , ΓετφΦΩα■∙Φσ ∩≡Φ Γ√ßε≡σ ±≥≡εΩα Φτ ∞σφ■. ┬ φα≈αδσ ±ΓεσΘ ≡αßε≥√ ∞σ≥εΣ action ∩≡εΓσ≡ σ≥, ΣσΘ±≥ΓΦ≥σδⁿφε δΦ ±εß√≥Φσ Γ√τΓαφε ∞σφ■: MenuItem mnItem; if(evt.target instanceof MenuItem) { . . . } return false; ┼±δΦ ²≥ε ≥αΩ, Γ ∩εδσ mnItem ±ε⌡≡αφ σ≥± ±±√δΩα φα ²δσ∞σφ≥ ∞σφ■, Γ√τΓαΓ°ΦΘ ±εß√≥Φσ: mnItem = (MenuItem)evt.target; ╥σ∞ φσ ∞σφσσ, Σδ ε∩≡σΣσδσφΦ ±≥≡εΩΦ, Γ√ß≡αφφεΘ ∩εδⁿτεΓα≥σδσ∞, φα∞ Σε±≥α≥ε≈φε ∩≡εαφαδΦτΦ≡εΓα≥ⁿ Γ≥ε≡εΘ ∩α≡α∞σ≥≡ ∞σ≥εΣα action: if(obj.equals("Exit")) { System.exit(0); } else if(obj.equals("New")) { MessageBox mbox; mbox = new MessageBox( "Item New selected", this, "Dialog from Frame", true); mbox.show(); } else if(obj.equals("Content")) { . . . } else if(obj.equals("About")) { . . . } ┬ Σαφφε∞ ±δ≤≈ασ Γ≥ε≡εΘ ∩α≡α∞σ≥≡ ∞σ≥εΣα action ß≤Σσ≥ ∩≡σΣ±≥αΓδ ≥ⁿ ±εßεΘ ±±√δΩ≤ φα ±≥≡εΩ≤, Γ√ß≡αφφ≤■ Φτ ∞σφ■, ∩ε²≥ε∞≤ Σδ ε∩≡σΣσδσφΦ Γ√ß≡αφφεΘ ±≥≡εΩΦ ∞√ ∞εµσ∞ Γ√∩εδφΦ≥ⁿ ∩≡ε±≥εσ ±≡αΓφσφΦσ ∞σ≥εΣε∞ equals. ┼±δΦ ∩εδⁿτεΓα≥σδⁿ Γ√ß≡αδ Φτ ∞σφ■ File ±≥≡εΩ≤ Exit, ∞√ Γ√τ√Γασ∞ ∞σ≥εΣ System.exit, ∩≡σΣφατφα≈σφφ√Θ Σδ ταΓσ≡°σφΦ ≡αßε≥√ ΓΦ≡≥≤αδⁿφεΘ ∞α°Φφ√ Java. ┬ ≥ε∞ ±δ≤≈ασ ΩεπΣα ∩εδⁿτεΓα≥σδⁿ Γ√ßΦ≡ασ≥ δ■ß≤■ Σ≡≤π≤■ ±≥≡εΩ≤ Φτ ∞σφ■, ∞σ≥εΣ action ±ετΣασ≥ ΣΦαδεπεΓ≤■ ∩αφσδⁿ φα ßατσ ε∩≡σΣσδσφφεπε φα∞Φ Ωδα±±α MessageBox. ┬ ²≥εΘ ΣΦαδεπεΓεΘ ∩αφσδΦ ε≥εß≡αµασ≥ φατΓαφΦσ Γ√ß≡αφφεΘ ±≥≡εΩΦ ∞σφ■. ╟α∞σ≥Φ∞, ≈≥ε ±≡ατ≤ ∩ε±δσ ±ετΣαφΦ Ωεφ±≥≡≤Ω≥ε≡ε∞ ΣΦαδεπεΓα ∩αφσδⁿ φσ ∩ε Γδ σ≥± φα ²Ω≡αφσ. ╠√ ε≥εß≡αµασ∞ σσ, Γ√τ√Γα ∞σ≥εΣ show. ╩δα±± MessageBox─δ ε≥εß≡αµσφΦ φατΓαφΦΘ Γ√ß≡αφφ√⌡ ±≥≡εΩ ∞σφ■ ∞√ ±ετΣασ∞ ΣΦαδεπεΓ≤■ ∩αφσδⁿ, ε∩≡σΣσδΦΓ ±ΓεΘ Ωδα±± MessageBox φα ßατσ Ωδα±±α Dialog, ΩαΩ ²≥ε ∩εΩαταφε φΦµσ: class MessageBox extends Dialog { . . . } ┬ Ωδα±±σ MessageBox σ±≥ⁿ ΣΓα ∩εδ , Ωεφ±≥≡≤Ω≥ε≡, ∞σ≥εΣ√ handleEvent Φ action. ╧εδ Ωδα±±α MessageBox┬φ≤≥≡Φ ΣΦαδεπεΓεΘ ∩αφσδΦ ∞√ ≡α±∩εδεµΦδΦ ≥σΩ±≥εΓεσ ∩εδσ Ωδα±±α Label, ∩≡σΣφατφα≈σφφεσ Σδ ε≥εß≡αµσφΦ ±εεß∙σφΦ , Φ Ωφε∩Ω≤ ± φαΣ∩Φ±ⁿ■ OK, ± ∩ε∞ε∙ⁿ■ Ωε≥ε≡εΘ ∞εµφε ταΓσ≡°Φ≥ⁿ ≡αßε≥≤ ΣΦαδεπεΓεΘ ∩αφσδΦ. ╤±√δΩα φα ≥σΩ±≥εΓεσ ∩εδσ ⌡≡αφΦ≥± Γ ∩εδσ lbMsg, φα Ωφε∩Ω≤ - Γ ∩εδσ btnOK. ╩εφ±≥≡≤Ω≥ε≡ Ωδα±±α MessageBox═α° Ωεφ±≥≡≤Ω≥ε≡ ±ετΣασ≥ ΣΦαδεπεΓ≤■ ∩αφσδⁿ ± ταΣαφφ√∞ ±εεß∙σφΦσ∞ Γφ≤≥≡Φ φσσ. ╤±√δΩα φα ±≥≡εΩ≤ ±εεß∙σφΦ ∩σ≡σΣασ≥± Ωεφ±≥≡≤Ω≥ε≡≤ ≈σ≡στ ∩σ≡Γ√Θ ∩α≡α∞σ≥≡. ╬±≥αδⁿφ√σ ∩α≡α∞σ≥≡√ Φ±∩εδⁿτ≤■≥± Ωεφ±≥≡≤Ω≥ε≡ε∞ ßατεΓεπε Ωδα±±α Dialog Σδ ±ετΣαφΦ ΣΦαδεπεΓεΘ ∩αφσδΦ: super(parent, sTitle, modal); ╧ε±δσ Γ√τεΓα Ωεφ±≥≡≤Ω≥ε≡α Φτ ßατεΓεπε Ωδα±±α φα° Ωεφ±≥≡≤Ω≥ε≡ ≤±≥αφαΓδΦΓασ≥ ≡ατ∞σ≡√ εΩφα ±ετΣαφφεΘ ΣΦαδεπεΓεΘ ∩αφσδΦ, Γ√τ√Γα ∞σ≥εΣ resize: resize(200, 100); ╬≥∞σφ ≤±≥αφεΓδσφφ√Θ ∩ε ≤∞εδ≈αφΦ■ ≡σµΦ∞ ≡ατ∞σ∙σφΦ Ωε∞∩εφσφ≥ BorderLayout, Ωεφ±≥≡≤Ω≥ε≡ ≤±≥αφαΓδΦΓασ≥ ≡σµΦ∞ GridLayout: setLayout(new GridLayout(2, 1)); ╬Ωφε ΣΦαδεπεΓεΘ ∩αφσδΦ ∩≡Φ ²≥ε∞ ≡ατΣσδ σ≥± φα ΣΓσ ≈α±≥Φ ∩ε πε≡Φτεφ≥αδΦ. ┬ Γσ≡⌡φ■■ ≈α±≥ⁿ ΣεßαΓδ σ≥± ≥σΩ±≥εΓεσ ∩εδσ Σδ ε≥εß≡αµσφΦ ±εεß∙σφΦ , Γ φΦµφ■■ - Ωφε∩Ωα OK: lbMsg = new Label(sMsg, Label.CENTER); add(lbMsg); btnOK = new Button("OK"); add(btnOK); ╠σ≥εΣ handleEvent Ωδα±±α MessageBox╩επΣα ∩εδⁿτεΓα≥σδⁿ ∩√≥ασ≥± ταΩ≡√≥ⁿ εΩφε ΣΦαδεπεΓεΘ ∩αφσδΦ, φα∩≡Φ∞σ≡, ±ΣσδαΓ ΣΓεΘφεΘ ∙σδ≈εΩ δσΓεΘ ΩδαΓΦ°σΘ ∞√°Φ ∩ε ±Φ±≥σ∞φε∞≤ ∞σφ■ ΦδΦ εΣΦφε≈φ√Θ ∙σδ≈εΩ ∩ε Ωφε∩Ωσ ≤ΣαδσφΦ εΩφα, ΓετφΦΩασ≥ ±εß√≥Φσ Event.WINDOW_DESTROY. ╠√ σπε εß≡αßα≥√Γασ∞ ±δσΣ≤■∙Φ∞ εß≡ατε∞: if(evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } else return super.handleEvent(evt); ┬√τ√Γα ∞σ≥εΣ dispose, ∞√ ≤Σαδ σ∞ εΩφε ΣΦαδεπεΓεΘ ∩αφσδΦ Φ ε±ΓεßεµΣασ∞ Γ±σ ±Γ ταφφ√σ ± φΦ∞ ≡σ±≤≡±√. ╠σ≥εΣ action Ωδα±±α MessageBox┼±δΦ ∩εδⁿτεΓα≥σδⁿ φαµΦ∞ασ≥ Ωφε∩Ω≤ OK, ≡α±∩εδεµσφφ≤■ Γ εΩφσ ΣΦαδεπεΓεΘ ∩αφσδΦ, ∞σ≥εΣ action Γ√τ√Γασ≥ Σδ ∩αφσδΦ ∞σ≥εΣ dispose, ≤Σαδ ²≥≤ ∩αφσδⁿ ± ²Ω≡αφα Φ Φτ ∩α∞ ≥Φ: |